GtkAppChooserDialog: handle sensitivity of 'Select' better
authorMatthias Clasen <mclasen@redhat.com>
Mon, 29 Aug 2011 03:49:41 +0000 (23:49 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 29 Aug 2011 03:49:41 +0000 (23:49 -0400)
When the dialog comes up without a selected item, make 'Select'
insensitive. Also, don't allow to unselect an item without
selecting a different one.

gtk/gtkappchooserdialog.c
gtk/gtkappchooserwidget.c

index 178d291e20fbbca4f34fa645e2de28c89455fabb..5412e7a91e2a5c894dd6375d2d0d2a7291a4ed13 100644 (file)
@@ -486,6 +486,7 @@ build_dialog_ui (GtkAppChooserDialog *self)
   GtkWidget *vbox;
   GtkWidget *vbox2;
   GtkWidget *button, *w;
+  GAppInfo *info;
 
   gtk_container_set_border_width (GTK_CONTAINER (self), 5);
 
@@ -539,6 +540,11 @@ build_dialog_ui (GtkAppChooserDialog *self)
                                               _("_Select"),
                                               GTK_RESPONSE_OK);
 
+  info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self->priv->app_chooser_widget));
+  gtk_widget_set_sensitive (self->priv->button, info != NULL);
+  if (info)
+    g_object_unref (info);
+
   gtk_dialog_set_default_response (GTK_DIALOG (self),
                                    GTK_RESPONSE_OK);
 }
index 8b3ab9d365d2ea81842454020a32b65c337d20d6..551c1ddbb60ccd4af3f2e8bd7a66d43c58356df2 100644 (file)
@@ -1176,7 +1176,7 @@ gtk_app_chooser_widget_init (GtkAppChooserWidget *self)
   gtk_widget_show (self->priv->program_list);
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->program_list));
-  gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+  gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
   gtk_tree_selection_set_select_function (selection, gtk_app_chooser_selection_func,
                                           self, NULL);
   g_signal_connect_swapped (selection, "changed",